/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package generadordeclasesv003.Controlador;

import generadordeclasesv003.Modelo.Atributo;
import generadordeclasesv003.Modelo.Clase;
import generadordeclasesv003.Modelo.EnumMultiplicidad;

/**
 *
 * @author Administrador
 */
public class Controlador_GestorDeCodigo {

    public Controlador_GestorDeCodigo() {
    }


public static void crearCodigoClase(Clase c) {
        Atributo atr = null;
        
        String aux = "using System;\nusing System.Collections.Generic;" +
                     "\nusing System.Linq;\nusing System.Text;" +
                     "\nusing Siage.Base;" +
                     "\nnamespace Siage.Core.Domain\n{\n";

        aux+="public class "+c.getNombreDeClase()+"{\n";
        aux += "public " + c.getNombreDeClase() + "(){}\n";
        aux+="public virtual int Id {get;set;}\n";

          for (int i = 0; i < c.getAtributos().size(); i++) {
              atr = c.getAtributos().get(i);

            if (atr.getObservaciones().length() != 0) {
                aux += "//" + atr.getObservaciones() + "\n";
            }

            if (atr.getMultiplicidad()==EnumMultiplicidad.ONE_TO_MANY || atr.getMultiplicidad()==EnumMultiplicidad.ZERO_TO_MANY || atr.getMultiplicidad()==EnumMultiplicidad.MANY_TO_MANY) {
                aux += "public virtual IList<" + atr.getTipoRetorno().getNombreDeClase() + ">"+esOpcional(atr)+" "+ Remplazar( atr.getNombre())+ "  {get;set;}\n";
            } else {

                  aux += "public virtual " +atr.getTipoRetorno().getNombreDeClase()+esOpcional(atr) + "  " + atr.getNombre() + " {get;set;}\n";

            }
        }

        aux += "\t}" +
                "\n}";
        
System.out.println(aux);
}

private static String esOpcional(Atributo a){
    String aux="";
    if(a.isIsOpcional()){
        aux="?";
    }

    return aux;

    }
public static String Remplazar(String d){
d.toLowerCase().charAt(0);
return d;
}

}
